property

Otázka od: mydelphiconf@centrum.cz

22. 9. 2004 9:34

Zdravim Delphiny,
  nejsem vubec zbehly v Delphi, rad bych se poptal na pro vas asi zakladni vec.

u definice tridy TGauge jsou definovane "jakesi" properties ... nekde jsou
properties definovane jen takto:

property ForeColor: TColor read FForeColor;

nekde zas takto:
property ForeColor: TColor read FForeColor write SetForeColor;


muzete mi to nekdo prelozit do cestiny? Diky moc.

P.



Odpovedá: Petr Daricek

22. 9. 2004 10:02

Ahoj,
  mas pravdu je to zakladni vec.
  property Nazev:Integer read FNeco write SetNeco;

Znamena ze pro cteni se pouzije hodnota Fneco a pro zapis SetNeco. Pri cemz obe
tyto hodnoty mohou byt jak promenne stejneho typu jako property(v tomto pripade
Integer), nebo metody v prislusnem tvaru. Pro cteni se jedna o funkci bez
parametru, ktera ma jako vystupni hodnotu typ shodny s typem property a pro
zapis je to procedura jejimz jedinym vstupnim parametrem je promena opet
stejneho typu.
  Pokud property neobsahuje v definici udaje o zapisu (write SetNeco), znamena
to ze je jenom pro cteni.
              Petr


Odpovedá: Petr Brant

22. 9. 2004 10:44

Pokud je u definice property pouze read, znamena to, ze tato vlastnost je
pouze pro cteni. Kdyz se pokusis o zapis, kompilator to nepovoli. Pokud je
tam i write, lze property prirazovat nejakou hodnotu. Podle vzite konvence
znamena

property ForeColor: TColor read FForeColor write SetForeColor;

to, ze nastaveni hodnoty vyvola funkci SetForeColor (moznost osetreni
pripadnych chybnych vstupu atd.), pokud by deklarace znela

property ForeColor: TColor read FForeColor write FForeColor ;

pak nastaveni hodnoty znamena fyzicky prirazeni hodnoty promenne FForeColor
(bez moznosti kontroly spravnosti apod.). Obdobne je to i s read, tj. ctenim
hodnoty lze vyvolat funkci.

RNDr. Petr Brant [brant@dcomm.cz]
http://brant.wz.cz


  nejsem vubec zbehly v Delphi, rad bych se poptal na pro vas asi zakladni
vec.

u definice tridy TGauge jsou definovane "jakesi" properties ... nekde jsou
properties definovane jen takto:

property ForeColor: TColor read FForeColor;

nekde zas takto:
property ForeColor: TColor read FForeColor write SetForeColor;


muzete mi to nekdo prelozit do cestiny?